import subprocess
import json

@app.route('/api/run_command', methods=['POST'])
def run_command():
    """
    执行系统命令的API端点
    
    请求体格式:
    {
        "command": "要执行的命令"
    }
    
    返回格式:
    {
        "success": true/false,
        "stdout": "标准输出内容",
        "stderr": "错误输出内容",
        "exit_code": 退出码
    }
    """
    try:
        data = request.json
        command = data.get('command')
        
        if not command:
            return jsonify({'error': '命令不能为空'}), 400
            
        # 使用subprocess.Popen执行系统命令
        # shell=True 允许执行shell命令
        # stdout和stderr被重定向到管道以捕获输出
        # text=True 使输出以文本形式返回而不是字节
        process = subprocess.Popen(
            command, 
            shell=True, 
            stdout=subprocess.PIPE, 
            stderr=subprocess.PIPE,
            text=True
        )
        
        # 等待命令执行完成并获取输出
        stdout, stderr = process.communicate()
        
        # 返回执行结果
        return jsonify({
            'success': True,
            'stdout': stdout,
            'stderr': stderr,
            'exit_code': process.returncode
        })
    except Exception as e:
        # 捕获并返回任何执行过程中的错误
        return jsonify({'error': str(e)}), 500